/**************************************************************************//**
 * @item     CosyOS-III Kernel
 * @file     os_sysidle.c
 * @brief    系统空闲任务（Sysidle）
 * @author   迟凯峰
 * @version  V2.0.0
 * @date     2025.08.04
 ******************************************************************************/

#include "os_var.h"
#include "os_api.h"
#include "sv_create.h"
#include "sv_task.h"
#include "ur_api.h"

/**
 \brief      系统空闲任务
 \param[in]  任务名称      Sysidle
 \param[in]  任务优先级    0
 \param[in]  任务栈大小    SYSCFG_STACKSIZE_SYSIDLE
 \param[in]  安全运行时    0
 \param[in]  任务名称文本  遗产模式："Sysidle"，标准/兼容模式："系统空闲"
 \return     无
 */
#define _taskname "\xCF\xB5\xCD\xB3\xBF\xD5\xCF\xD0" /*!< "系统空闲" */
uCreateTask(Sysidle, 0, SYSCFG_STACKSIZE_SYSIDLE, 0, _taskname)
{
	void idle_hook(void);
	while(true){
		#if (SYSCFG_SOFTRTC == __ENABLED__)
		static s_u8_t _RTC_MEM_ year = 0xFF;
		if(year != s_rtc.year){
			year = s_rtc.year;
			s_month2day = year ? ((year & 3) ? 28 : 29) : ((s_rtc.yeah & 3) ? 28 : 29);
		}
		#endif
		#if (SYSCFG_SAFERUNTIME == __ENABLED__)
		s_sign_timeout = false;
		#endif
		#if (SYSCFG_IDLEHOOK == __ENABLED__)
		idle_hook();
		#endif
		#if (SYSCFG_LOWPOWERMODE == __ENABLED__)
		mCosyOS_IDLE();
		#endif
		OS_NOP(4);
	}
}
#undef _taskname
